package main

import "fmt"

func main() {
	/*
		指针作为参数：

		参数的传递：值传递，引用传递
	*/
	a := 10
	fmt.Println("fff1()函数调用前：a", a)
	fff1(a)
	fmt.Println("fff1()函数调用后：a", a)

	fff2(&a)
	fmt.Println("fff2()函数调用后：a", a)

	arr1 := [4]int{1, 2, 3, 4}
	fmt.Println("fff3()函数调用前数组：", arr1)
	fff3(arr1)
	fmt.Println("fff3()函数调用后数组：", arr1)

	fff4(&arr1)
	fmt.Println("fff4()函数调用后数组：", arr1)
}
func fff1(num int) { //值传递：num = a = 10
	fmt.Println("fff1()函数中，num的值：", num)
	num = 100
	fmt.Println("fff1()函数中修改num：", num)
}

func fff2(p1 *int) { //传递的是 a 的地址，就是引用传递
	fmt.Println("fff2()函数中：p1", *p1)
	*p1 = 200
	fmt.Println("fff2()函数中：修改p1", *p1)
}
func fff3(arr2 [4]int) {
	fmt.Println("fff3()函数中数组：", arr2)
	arr2[0] = 100
	fmt.Println("fff3()函数中修改数组：", arr2)
}
func fff4(p2 *[4]int) {
	fmt.Println("fff4()函数调用中数组：", *p2)
	p2[0] = 100
	fmt.Println("fff4()函数调用中修改数组：", *p2)
}
